当排除一个特定值时list.sort()如何工作?

您所在的位置:网站首页 string list排序 当排除一个特定值时list.sort()如何工作?

当排除一个特定值时list.sort()如何工作?

#当排除一个特定值时list.sort()如何工作?| 来源: 网络整理| 查看: 265

我有一份清单

List names = new ArrayList(); names.add("One"); names.add("Two"); names.add("Three"); names.add("Six"); names.add("Four"); names.add("Five");

我想要这个列表排序,以便Six首先出现,然后它应该按字母顺序排列.

names.sort((x, y) -> { if (x.startsWith("S")) return -1; if (y.startsWith("S")) return 1; return x.compareTo(y); });

这很好用.为什么它不适用于唯一的x.startswith("S")条件.为什么我需要添加条件y.startsWith("S")

1> Eran..:

您不知道sort算法将以何种顺序比较您的Strings.它可能会打电话compare("Two","Six"),它可能会打电话compare("Six","Two").因此,您Comparator必须支持这两种情况.

此外,在没有检查startsWith("S")第一个和第二个参数的情况下,您违反了Comparator合同,这需要这样做sgn(compare(x, y)) == -sgn(compare(y, x)).

顺便说一句,最好检查equals("Six")而不是startsWith("S").否则,如果您的输入包含"Seven",则代码将失败.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3